Metoda Eulera
Omówiliśmy kilka rodzajów RRZ rzędu pierwszego, których rozwiązania można uzyskać za pomocą procesu całkowania. Niestety, nawet jeśli ograniczymy się do RRZ rzędu pierwszego, to większości z nich nie jesteśmy w stanie rozwiązać poprzez ich całkowanie, co więcej, rozwiązania takich równań nie są funkcjami elementarnymi. Dlatego powinniśmy w dalszym ciągu omówić bardziej uniwersalne metody.
Rozpatrzmy parę \( x, y \), gdzie \( x \) jest zmienną niezależną, natomiast \( y \) jest pewną różniczkowalną funkcją zmiennej \( x. \) Zadamy sobie pytanie, co oznacza równość
Odpowiedź, którą już znamy, brzmi następująco: prawa strona równania zadaje w każdym punkcie \( (x_0,\,y_0) \) płaszczyzny fazowej wielkość pochodnej rozwiąznia \( y=\phi(x;\,C) \) przechodzącego przez ten punkt. Można to przeformułować jeszcze w taki sposób: prosta
jest styczna do rozwiązania \( y=\phi(x;\,C) \) równania ( 1 ) spełniającego warunek początkowy \( y(x_0)=y_0. \) Rozwinięcie tego rozwiązania w szereg Taylora
pozwala wnioskować że "dokładne" rozwiązanie w małym otoczeniu punktu \( x_0 \) różni się od linii prostej ( 2 ), o wyraz który jest rzędu \( |x-x_0|^2 \). A więc, dokładne rozwiązanie można przybliżać odcinkami prostej postaci
gdzie \( (x_k,\,y_k), \quad k=0,1,.... \) - zbiór punktów leżących w pobliżu poszukiwanej krzywej. W poszukiwaniu takiego przybliżenia korzystamy z pojęcia pola kierunków, które można określić jako pole taz zwanych infinitezymalnych odcinków zadanych w każdym punkcie \( (x,\,y) \) za pomocą wzoru
Obraz graficzny takiego pola kierunków można uzyskać w każdym z dostępnych pakietów matematyki komputerowej (MathCad, MathLab, Maple, Mathematica ). Tutaj i dalej będziemy przytaczać "orfografię" pakietu Mathematica. Zobrazujemy, dla przykładu, pole kierunków funkcji
Komórka 1.1.
Wynikiem jest wykres pola kierunków przedstawiony na Rys. 1
Na Rys. 2 przedstawione zostało pole kierunków z kilkoma rozwiązaniami dokładnymi równania
które dane są wzorem
Widać na nim wyraźnie, że pole kierunków jest styczne do rozwiązania w każdym punkcie.
Znajomość pola kierunków w celu konstrukcji przybliżonego rozwiązania równania różniczkowego wykorzystał po raz pierwszy Leonard Euler. Jego algorytm dotyczy poszukiwania rozwiązania przybliżonego zadadnienia Cauchyego
Traktując stałe \( x_0, \,\,y_0 \) oraz funkcję \( f(x,\,y) \) jako znane wielkości, Euler zaproponował opis łamanej przybliżającej rozwiązanie na odcinku \( [a=x_0,\,b] \) w postaci następującego algorytmu:
gdzie \( h=\frac{b-a}{N} \).
Do tego, by przybliżenie dostatecznie dobrze opisywało poszukiwane rozwiązanie, należy stosować dostatecznie mały krok \( h \) (czyli duże \( N \)). Do zastosowania powyższego algorytmu, w zasadzie, wystarczy umieć posługiwać się kalkulatorem, jednak odpowiednie obliczenia są bardzo żmudne. Podamy, zgodnie z 1,
dwie wersje algorytmu Eulera, zaimplentowane w pakiecie Mathematica dla rozwiązywania zagadnienia początkowego
na odcinku \( (0,\,4) \) z krokiem \( h=0.2 \).
Prosty kod wygląda następująco:
Komórka 1.2.
Uwaga 1:
Warunki \( n \gt 0 \\ \) \( n \in Integers \) są potrzebne by uniknąć nieskończonej rekursji, która mogłaby powstać, jeżeli pozwolilibyśmy \( n \) przybierać dowolne (w tym również ujemne) wartości.
Jeżeli teraz dodać moduł
Komórka 1.3.
to otrzymamy poszukiwane przybliżone rozwiązanie w postaci tabelki.
Powyższy algorytm przy dużej liczbie iteracji \( N \) będzie pracować wolno, ponieważ przy każdej kolejnej liczbie \( n \) obliczenia rozpoczynają się od punktu \( y[0] \). Algorytm można jednak zmodyfikować w taki sposób że wielkości \( v[0],\,v[1],\,...v[n] \) będą zapamiętywane, co znacznie usprawni obliczenia. Kolejną rzeczą jest zastąpienie tabelki \( sol \) przez funkcję interpolacyjną \( vEul[t_{-}] = Interpolation[sol][t] \). Wszystko to razem wzięte tworzy następujący szybko działający algorytm:
Komórka 1.4.
W wyniku implementacji tego algorytmu uzyskujemy rozwiązanie przybliżone na tle rozwiązania dokładnego, co ilustruje Rys. 3.
Przypisy
1. D. Dubin, Numerical and Analytical Methods for Scientists and Enginneers Using Mathematica, John Wiley and Sons, New Jersey, 2003